#include<bits/stdc++.h>
using namespace std;
const int P=1e9+7;
inline void chadd(int &x,int y){
  if((x+=y)>=P)x-=P;
}
inline void chmul(int &x,int y){
  x=1ll*x*y%P;
}
int main(){
  freopen("life.in","r",stdin);
  freopen("life.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n,k,w=0; cin>>n>>k;
  vector<vector<int> > g(n);
  vector<int> dg(n);
  for(int i=1;i<n;i++){
    int u,v; cin>>u>>v;
    dg[--u]++,dg[--v]++;
    g[u].emplace_back(v);
    g[v].emplace_back(u);
  }
  if(*max_element(dg.begin(),dg.end())<=2)
    cout<<"YES\n"<<k<<endl,exit(0);
  vector<vector<int> > d(n,vector<int>(n)),p=d;
  for(int r=0;r<n;r++){
    function<void(int,int)> dfs=[&](int u,int f){
      for(int i:g[u])
        if(i!=f){
          d[r][i]=d[r][u]+1;
          p[r][i]=p[r][u]|1<<i;
          dfs(i,u);
        }
    };
    p[r][r]=1<<r,dfs(r,r);
  }
  for(int S=0;S<1<<n;S++){
    bool f=true;
    for(int i=0;i<n&&f;i++)
      for(int j=i;j<n&&f;j++)
        if(d[i][j]==k-1)
          f&=__builtin_popcount(S&p[i][j])==1;
    if(f)w++;
  }
  cout<<(w?"YES\n":"NO\n")<<w<<endl;
  return 0;
}